Ruby parser rewite
2023
Ruby
parser
の抱える課題解決のため、書き換えが図られている
RubyKaigi
2023でも複数のparserに関するセッションがあった
https://rubykaigi.org/2023/schedule/
3.2時点の
CRuby
parserについて
Bison
というツールで生成されたもの
LR
パーサ
を生成する
パーサジェネレータ
Bisonは文法ファイル(CRubyのコードベースでは
parse.y
)を受け取り、
C
でパーサーを生成する(
parse.c
)
課題
https://railsatscale.com/2023-06-12-rewriting-the-ruby-parser/
CRuby
パーサーには長年の問題が大きく分けて4つある
保守性
undocumented
Ruby Hacking Guide
や
Ruby Under A Microscope
などの試みはあるが、実際は
parse.y
を読むしかない
コミッター
の中でもごく一部しかコミットしていない
エラー耐性
構文エラーが発生してもプログラムの解析を継続するパーサーの能力
高いほどコードを書く人に早く、正確に修復すべき点をフィードバックできる
移植性
CRuby
以外の実装で使えない
universal parser
にしたい
性能
https://rubykaigi.org/2023/presentations/spikeolaf.html
@spikeolaf
https://yui-knk.hatenablog.com/entry/2023/06/18/162100